// PROGRAMA : IDCPA003 (VERSAO PARA ABN)
// BIBLIOTECA : SISP
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA/INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : * DATA: 14/08/2004
// OBJETIVO : LIBERAR RENAID DO DID-CADASTRO OPCAO: 'ADZ'

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcta003;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.DidHistorico;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpa003 OBJETIVO : LIBERAR RENAID DO DID-CADASTRO OPCAO: 'ADZ' *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcpa003")
public class Idcpa003 {
	Idcpa003 idcpa003Anterior;
	DidCadastro vwDidcad = new DidCadastro();
	DidHistorico vwDidhis = new DidHistorico();
	// Telas/relatorios utilizados
	Idcta003 idcta003;
	// Includes utilizados
	// Areas globais / session
	Sisgsisp sisgsisp; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private String faseproc = "0";

	private Idcta003 preMapas() {
		idcta003 = new Idcta003(true, sessao);
		idcta003.setMensagemSaida("ATENCAO ESTE PROGRAMA IRAR LIBERAR O RENAID DO BANCO DE DADOS");
		// Par�grafo: r0()
		return idcta003;
	}

	public Idcpa003(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcta003 idcta003) {
		try {
			main(idcta003);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcta003 pidcta003) {
		if (pidcta003 == null) {
			primeiraVez = true;
			// idcta003 = new Idcta003 (primeiraVez);
			idcta003 = preMapas();
			idcta003.setNavegar("../idcpa003/executar");
			sessao.setAtributo("idcpa003", this);
			result.include("idcta003", idcta003);
			idcta003.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcta003);
		}

		idcta003.receberTela(false, result);
		if (UtilBean.getInitUser().equals("S113590") || UtilBean.getInitUser().equals("T0462") || UtilBean.getInitUser().equals("T0461") || UtilBean.getInitUser().equals("T0264") || UtilBean.getInitUser().equals("T0561")) {
			if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
				Idcpm001 idcpm001 = new Idcpm001(this.result, this.sessao);
				idcpm001.executar(null);
			}

			if (!idcta003.getOperacao().equals("ADZ")) {
				Idcpm001 idcpm001 = new Idcpm001(this.result, this.sessao);
				idcpm001.executar(null);
			}

			if (idcta003.getIsn().equals("S")) {
				vwDidcad.consultaRenaid(idcta003.getIrenaid());

				idcta003.setMensagemSaida("RENAID LIBERADO DO BANCO PARA SER USADO NOVAMENTE. O.K");

				vwDidhis.setRenaid(vwDidcad.getRenaid());
				vwDidcad.setRenaid(" ");
				vwDidcad.atualiza();
				// //dao.commit();
				historico();
				vwDidcad.fecha();
				if (vwDidcad.registrosProcessados() == 0) {
					idcta003.setMensagemSaida("ESTE RENAID NAO EXISTE NO BANCO");
				}
			}

		} else {
			idcta003.setMensagemSaida("USUARIO NAO AUTORIZADO A USAR ESTE PROGRAMA");
		}

		sessao.setAtributo("IDCPA003", this);
		result.include("idcta003", idcta003);
		if (!result.used()) {
			idcta003.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void historico() {

		vwDidhis.setDataInclusao(UtilBean.obtemDataCorrente());
		vwDidhis.setMatriculaInclusao(sessao.getSisgsisp().getMatric());
		vwDidhis.setMatesp(vwDidcad.getMatriculaFunc());
		vwDidhis.setDataAtualizacao(UtilBean.obtemDataCorrente());
		vwDidhis.setHoraAtu(Integer.parseInt((new SimpleDateFormat("HHmmssS").format(Calendar.getInstance().getTime()))));
		vwDidhis.grava();
		// dao.commit();
	}

	private void restaurarEstados(Idcta003 pidcta003) {
		this.idcpa003Anterior = (Idcpa003) sessao.getAtributo("idcpa003");
		if (pidcta003 != null) {
			idcta003 = pidcta003;
		} else {
			idcta003 = this.idcpa003Anterior.idcta003;
		}
		idcta003.setSessao(sessao);
		this.faseproc = this.idcpa003Anterior.faseproc;
	}
}
